﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;

public partial class Views_TypeOfStateManagements : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            StoreManegement_LoadData();
        }
    }

    protected void StoreManegement_ReadData(object sender, Ext.Net.StoreReadDataEventArgs e)
    {
        StoreManegement_LoadData();
    }

    private void StoreManegement_LoadData()
    {
        using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
        {
            StoreManegement.DataSource = db.StateOfManagements.ToList<StateOfManagement>();
            StoreManegement.DataBind();

            GridPanelManegement.ActiveIndex = -1;
        }
    }

    protected void RowSelected(object sender, DirectEventArgs e)
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = null;

                try
                {
                    rsm = GridPanelManegement.SelectionModel.Primary as RowSelectionModel;
                    if (rsm.SelectedRow == null)
                    {
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ để ...").Show();
                        return;
                    }
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ để ...").Show();
                    return;
                }

                int manageID = Int32.Parse(rsm.SelectedRow.RecordID);
                StateOfManagement sm = db.StateOfManagements.Single(t => t.StateID == manageID);


                lblViewName.Text = sm.NameOfState;

                lblViewDes.Text = sm.Descriptons;
                chkViewStatus.Checked = Boolean.Parse(sm.StatusOfState.ToString());
            }

        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, xin bạn vui lòng quay lại sau").Show();
        }
    }

    protected void btnAdd_DirectClick(object sender, DirectEventArgs e)
    {
        WindowAdd.Hidden = false;
        ResetForm_WindowAdd();
    }

    [DirectMethod]
    public void StateOfManegement_Add()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                string name = txtAddNameofManegement.Text.Trim();

                List<StateOfManagement> manage = db.StateOfManagements.ToList<StateOfManagement>();
                foreach (var item in manage)
                {
                    if (item.NameOfState.ToLower().Equals(name.ToLower()))
                    {
                        lblFormAddMsg.Text = "Tên trình độ này đã tồn tại, hãy nhập tên khác";
                        txtAddNameofManegement.Focus(true, 100);
                        return;
                    }
                }
                StateOfManagement sm = new StateOfManagement()
                {
                    NameOfState = name,
                    Descriptons = txtAddDes.Text.Trim(),
                    StatusOfState = chkAdd.Checked
                };
                db.StateOfManagements.Add(sm);
                db.SaveChanges();

                StoreManegement_LoadData();
                WindowAdd.Hidden = true;

                X.Msg.Alert("Thông báo", "Thêm mới trình độ quản lí nhà nước thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, xin bạn vui lòng quay lại sau").Show();
        }
    }

    protected void btnAddCancel_DirectClick(object sender, DirectEventArgs e)
    {
        WindowAdd.Hidden = true;
    }

    protected void btnUpdate_DirectClick(object sender, DirectEventArgs e)
    {
        try
        {
            lblUpdateMsg.Text = "";
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = null;

                try
                {
                    rsm = GridPanelManegement.SelectionModel.Primary as RowSelectionModel;
                    if (rsm.SelectedRow == null)
                    {
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ để chỉnh sửa").Show();
                        return;
                    }

                    int manageID = Int32.Parse(rsm.SelectedRow.RecordID);
                    StateOfManagement sm = db.StateOfManagements.Single(t => t.StateID == manageID);

                    txtUpdateName.Text = sm.NameOfState;
                    txtUpdateDes.Text = sm.Descriptons;
                    chkUpdate.Checked = Boolean.Parse(sm.StatusOfState.ToString());

                    WindowUpdate.Hidden = false;
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ để chỉnh sửa").Show();
                    return;
                }
            }

        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, xin bạn vui lòng quay lại sau").Show();
        }
    }

    [DirectMethod]
    public void StateOfManegement_Update()
    {
        try
        {
            lblUpdateMsg.Text = "";
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = null;

                try
                {
                    rsm = GridPanelManegement.SelectionModel.Primary as RowSelectionModel;
                    if (rsm.SelectedRow == null)
                    {
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ để chỉnh sửa").Show();
                        return;
                    }
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ để chỉnh sửa").Show();
                    return;
                }

                int manageID = Int32.Parse(rsm.SelectedRow.RecordID);
                StateOfManagement sm = db.StateOfManagements.Single(t => t.StateID == manageID);

                string newName = txtUpdateName.Text.Trim();

                foreach (var item in db.StateOfManagements)
                {
                    if (item.NameOfState.ToLower().Equals(newName.ToLower()) && item.StateID != sm.StateID)
                    {
                        lblUpdateMsg.Text = "Tên trình độ này đã tồn tại, xin hãy nhập tên khác";
                        return;
                    }
                }
                sm.NameOfState = newName;
                sm.Descriptons = txtUpdateDes.Text.Trim();
                sm.StatusOfState = chkUpdate.Checked;

                db.SaveChanges();
                StoreManegement_LoadData();

                WindowUpdate.Hidden = true;
                X.Msg.Alert("Thông báo", "Cập nhật thông tin trình độ quản lí nhà nước thành công").Show();
            }

        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, xin bạn vui lòng quay lại sau").Show();
        }
    }

    protected void btnDelete_DirectClick(object sender, DirectEventArgs e)
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = null;
                StateOfManagement sm = null;

                try
                {
                    rsm = GridPanelManegement.SelectionModel.Primary as RowSelectionModel;
                    if (rsm.SelectedRow == null)
                    {
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ để xóa").Show();
                        return;
                    }

                    int manageID = Int32.Parse(rsm.SelectedRow.RecordID);
                    sm = db.StateOfManagements.Single(t => t.StateID == manageID);
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ để xóa").Show();
                    return;
                }

                X.Msg.Confirm("Thông báo hệ thống", String.Format("Bạn có muốn xóa trình độ quản lí nhà nước đã chọn ? [{0}]", sm.NameOfState),
                        new MessageBoxButtonsConfig()
                        {
                            Yes = new MessageBoxButtonConfig
                            {
                                Text = "Xóa",
                                Handler = "App.direct.DoYes_DeleteStateOfManagement();"
                            },
                            No = new MessageBoxButtonConfig
                            {
                                Text = "Hủy bỏ"
                            }
                        }).Show();
            }

        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, xin bạn vui lòng quay lại sau").Show();
        }
    }

    [DirectMethod]
    public void DoYes_DeleteStateOfManagement()
    {
        try
        {
            lblUpdateMsg.Text = "";
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = GridPanelManegement.SelectionModel.Primary as RowSelectionModel;

                int manageID = Int32.Parse(rsm.SelectedRow.RecordID);
                StateOfManagement sm = db.StateOfManagements.Single(t => t.StateID == manageID);

                db.StateOfManagements.Remove(sm);

                db.SaveChanges();
                StoreManegement_LoadData();
                ResetControls_Viewmanage();


                WindowUpdate.Hidden = true;
                X.Msg.Alert("Thông báo", "Xóa trình độ quản lí nhà nước thành công").Show();
            }

        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, xin bạn vui lòng quay lại sau").Show();
        }
    }

    private void ResetForm_WindowAdd()
    {
        lblFormAddMsg.Text = "";
        txtAddNameofManegement.Text = "";
        txtAddDes.Text = "";
        chkAdd.Checked = false;
    }

    private void ResetControls_Viewmanage()
    {
        lblViewName.Text = "";
        lblViewDes.Text = "";
        chkUpdate.Checked = false;
    }
}